楼主: faruto
178173 136

[交易平台及行情软件] 基于MATLAB的量化数据回测工具箱FQuantToolBox by faruto[持续更新]   [推广有奖]

学科带头人

10%

还不是VIP/贵宾

-

威望
2
论坛币
2917 个
通用积分
12.4123
学术水平
326 点
热心指数
318 点
信用等级
306 点
经验
115446 点
帖子
672
精华
5
在线时间
1470 小时
注册时间
2008-3-15
最后登录
2022-3-20
毕业学校
北京师范大学

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
《量化投资:以MATLAB为工具》书籍简介
http://www.matlabsky.com/thread-45267-1-1.html
买《量化投资:以MATLAB为工具》写评论得FQuantToolBox全部源码Mcode
http://www.matlabsky.com/thread-45969-1-1.html

最新版下载地址(可以收藏,未来持续更新):
http://pan.baidu.com/s/1gdIiccN


FQuantToolBox Mannual byLY_faruto

By LiYang(faruto)

http://weibo.com/faruto   
http://www.matlabsky.com
http://blog.sina.com.cn/faruto  
Email:farutoliyang@foxmail.com
FQuantToolBox: A Data and Backtesting Quant Tool Box based on MATLAB by faruto.
Version:V1.0
Last Modified 2014.12.14

1.         FQuantToolBox是做什么用的?

FQuantToolBox定位是个数据和回测工具箱,没有实盘交易相关接口的实现(但未来不排除增加相关功能)。
数据方面,FQuantToolBox数据获取函数完全基于网络的免费数据源(主要为新浪财经、雅虎财经等金融网站),不但可以积累历史数据,也可以进行动态更新,现已实现的数据获取为A股市场的全部股票名称和对应代码(包含已退市股票)、A股市场的股票日线除权数据以及复权因子、A股市场的股票的除权除息信息、A股市场的股票每日交易明细数据(Tick数据)、A股市场的的股票财务指标数据、A股市场的股票的三张表(资产负债表、现金流量表、利润表)数据,未来数据方面会增加更多的数据,包括期货数据以及其他金融标的的数据,整体的思想还是完全基于网络获取和更新,完全免费。
         基于网络的数据获取的实现方式大体过程就是网络数据网址寻找——> 网址分析——> urlread+正则表达式数据提取。进行网络数据的抓取,正则表达式是一定会遇到的,MATLAB中有相应的正则表达式函数,有关正则表达式的东西这里不做展开,各位看官需要自行做些功课,FQuantToolBox工具箱的Doc文件夹内有个我重新整理过的《MATALB正则表达式零基础起步教程.doc》文档,可以帮助您学习正则表达式相关的东西。
回测方面,FQuantToolBox工具箱当下提供了一个“如何构建基于MATLAB的回测系统”的demo样例,此部分内容来自我出版的《量化投资:以MATLAB为工具》的相关章节,未来回测方面会增添更多的辅助函数和插件,方便您使用MATLAB进行股票以及期货相关策略的回测。
         未来FQuantToolBox工具箱每次发布都会提供两个版本,无历史数据版本和有历史数据版本。无历史数据版本仅提供相关函数,你可以在自己本地运行相关脚本来批量获取历史数据;有历史数据版本不但提供相关函数,还提供已经获取好的历史数据(A股市场全部股票股票名称和代码、日线数据、每日交易明细数据、除权除息信息、财务指标数据、三张变数据),节省您获取历史数据的时间,但相应的下载文件也会比较大(尤其股票每日交易明细数据),新的数据更新只需运行相应脚本函数就可以进行全市场最新数据的更新。


2.         FQuantToolBox工具箱内容简介

FQuantToolBox工具箱内容截图:

1.jpg


其中
上面截图中的一些函数文件就是用来实现获取数据、批量保存数据至本地.mat文件、前后复权数据计算、K线图展示、回测等功能的。各个子文件夹存放的内容如下:
DataBase文件夹,主要用来存贮批量下载的历史数据。
Doc文件夹,主要用来存放一些简历教程和资料,比如我重新整理过的《MATALB正则表达式零基础起步教程.doc》文档,就存放在Doc文件夹内。
MatlabGame文件夹,主要存放一些基于MATLAB的游戏,用来休闲娱乐,现在主要有俄罗斯方块(mtetris.m)、贪吃蛇(snake.m)、数独(sudokue.m)。
ToolBox文件夹,主要存放一些其他常用的工具箱,主要有:

2.jpg

Utilities文件夹,主要存放一些常用工具函数和辅助函数。
<如何构建基于MATLAB的回测系统>文件夹,提供了一个“如何构建基于MATLAB的回测系统”的demo样例,此部分内容来自我出版的《量化投资:以MATLAB为工具》的相关章节。
下面来介绍一下相关的函数和测试样例。

3.        行情数据和基本面数据获取函数


    (1)     获取A股市场的全部股票名称和对应代码(包含已退市股票)


函数名称:GetStockList_Web.m
函数作用:获取A股市场的全部股票名称和对应代码(包含已退市股票)
函数句柄:[StockList,StockListFull] =GetStockList_Web
函数说明:从http://quote.eastmoney.com/stocklist.html抓取最新的股票名称和代码列表,返回的StockList为股票名称和对应的代码
测试样例:

  1. %% 获取股票代码列表测试
  2. [StockList,StockListFull] =GetStockList_Web;
  3. StockCodeDouble = cell2mat(StockList(:,3) );
  4. save('StockList','StockList');
复制代码

运行结果:
StockList:

3.jpg


(2)     获取A股市场的股票日线除权数据以及复权因子
获取单只股票的日线数据
函数名称:GetStockTSDay_Web.m
函数作用:获取单只股票的日线数据除权数据以及复权因子(包含已退市股票)
函数句柄:[StockDataDouble,adjfactor] =GetStockTSDay_Web(StockCode,BeginDate,EndDate)
函数说明:从
http://vip.stock.finance.sina.com.cn/corp/go.php/vMS_FuQuanMarketHistory/stockid/000562.phtml?year=2014&jidu=4
抓取相应股票的后复权数据和复权因子,然后反推算出最新的除权价格。
返回的StockDataDouble为股票除权后的日线数据,其每列的含义为:
日期开 高 低 收 量(股) 额(元) 复权因子

有关股票日线数据的获取,我也尝试了许多数据网址,最终决定从这个链接抓的理由是:可获取所有的A股的从上市至今的日线数据(包含已退市股票)且数据质量不错,其他的链接要么可获取的日线的历史长度太短,要么数据质量不好,从上面这个链接抓数据还有一个好处就是可以直接得到复权因子,进而可以直接根据复权因子进行前后复权数据的生成,非常省事,尽管我们可以抓取股票分红配股的信息(下面有函数获取股票的除权除息信息数据),然后再自己计算复权因子,进而计算前后复权数据。
有关复权因子的定义,以及前后复权数据的计算方法,这里不做展开,您需要自己做些功课,只有亲自研究过、coding过,您才会发现,一个简单的前后复权弄彻底搞清楚并实现并不是特别简单。
这里要说明的是一般股票的回测,之所以要计算和生成前复权数据(后面有相应函数实现),是因为在股票的回测中,我们一般会使用前复权的数据进行回测,而非除权后的数据,因为除权后的数据由于分红配股的影响数据有缺口不够连续,会影响相应指标的计算。
测试样例:

  1. %% 参数设置
  2. StockCode_G = '000562'

  3. str = ['全局参数设置完毕!'];
  4. disp(str);
  5. %% 获取股票日线(除权除息)数据测试
  6. StockCode = StockCode_G;

  7. BeginDate = '20140101';
  8. EndDate = '20150101';

  9. [StockDataDouble,adjfactor] = GetStockTSDay_Web(StockCode,BeginDate,EndDate);
复制代码

运行结果:
StockDataDouble:

4.jpg


批量获取股票除权日线数据并存贮至本地.mat数据
函数名称:SaveStockTSDay.m
函数作用:批量获取股票除权日线数据并存贮至本地.mat数据(包含已退市股票)
函数句柄:[SaveLog,ProbList,NewList]= SaveStockTSDay(StockList,AdjFlag,XRDFlag)
函数说明:基于GetStockTSDay_Web函数,批量获取StockList指定的代码列表的日线数据并存贮至工具箱下的DataBase\Stock\Day_ExDividend_mat文件夹内,首次获取全市场所有的股票数据会比较费时,若已经有历史数据,运行SaveStockTSDay会进行本地数据的更新至最新交易日数据。
测试样例:

  1. %% 获取股票代码列表测试
  2. [StockList,StockListFull] = GetStockList_Web;
  3. StockCodeDouble = cell2mat( StockList(:,3) );
  4. save('StockList','StockList');
  5. %% 股票数据更新-除权除息数据-无并行操作
  6. AdjFlag = 0;
  7. XRDFlag = 0;
  8. [SaveLog,ProbList,NewList] =SaveStockTSDay(StockList,AdjFlag,XRDFlag);
复制代码

运行结果:
首次运行后就会在本地DataBase\Stock\Day_ExDividend_mat保存全部A股市场的除权数据:

5.jpg

(3)     获取股票交易明细数据

获取单只股票某日交易明细数据
函数名称:GetStockTick_Web.m
函数作用:获取单只股票某日交易明细数据
函数句柄:[StockTick,Header,StatusStr]= GetStockTick_Web(StockCode,BeginDate,SaveFlag)函数说明:从
http://vip.stock.finance.sina.com.cn/quotes_service/view/vMS_tradehistory.php?symbol=sz000562&date=2014-12-05
抓取单只股票某日交易明细数据,返回的StockTick为股票交易明细数据,每列的含义为:
成交时间成交价 价格变动 成交量(手) 成交额(元) 性质(买盘:1,卖盘:-1,中性盘:0)
测试样例:

  1. %% 参数设置
  2. StockCode_G = '000562'

  3. str = ['全局参数设置完毕!'];
  4. disp(str);
  5. %% 获取股票某日交易明细
  6. StockCode = StockCode_G;

  7. BeginDate = '20141205';
  8. [StockTick,Header,StatusStr] =GetStockTick_Web(StockCode,BeginDate);
复制代码

运行结果:
StockTick:

6.jpg


批量获取股票每日交易明细数据并存贮至本地.mat数据
函数名称:SaveStockTick.m
函数作用:批量获取股票每日交易明细数据并存贮至本地.mat数据
函数句柄:[SaveLog,ProbList,NewList] = SaveStockTick(StockList,DateList,PList,CheckFlag)
函数说明:基于GetStockTick_Web函数,批量获取StockList和DateList指定的代码列表、日期列表的交易明细数据并存贮至工具箱下的DataBase\Stock\Tick_mat文件夹内,首次获取全市场所有的股票数据会非常费时,若已经有历史数据,运行SaveStockTick会进行本地数据的更新至最新交易日数据。
测试样例:


  1. %% 获取股票代码列表测试
  2. [StockList,StockListFull] =GetStockList_Web;
  3. StockCodeDouble = cell2mat( StockList(:,3));
  4. save('StockList','StockList');
  5. %% 获取交易明细数据Tick-无并行操作
  6. [SaveLog,ProbList,NewList] =SaveStockTick(StockList);
复制代码

运行结果:
首次运行后就会在本地DataBase\Stock\Tick_mat保存全部A股市场的交易明细数据,每个股票一个文件夹。

7.jpg


8.jpg

(4)     获取股票分红配股信息数据

函数名称:GetStockList_Web.m
函数作用:获取股票分红配股信息数据
函数句柄:
[ Web_XRD_Data , Web_XRD_Cell_1 , Web_XRD_Cell_2] = GetStockXRD_Web(StockCode)
函数说明:从
http://vip.stock.finance.sina.com.cn/corp/go.php/vISSUE_ShareBonus/stockid/000562.phtml
抓取最新的股票名称和代码列表,返回的Web_XRD_Data , Web_XRD_Cell_1 , Web_XRD_Cell_2为股票的分红配股信息数据。
此函数是在Chandeman层编写过的一个函数基础修改而成。
测试样例:

  1. %% 参数设置
  2. StockCode_G = '000562'

  3. str = ['全局参数设置完毕!'];
  4. disp(str);
  5. %% 获取股票除权除息数据
  6. StockCodeInput = StockCode_G;

  7. [ Web_XRD_Data , Web_XRD_Cell_1 ,Web_XRD_Cell_2 ] = GetStockXRD_Web(StockCodeInput);
  8. Web_XRD_Cell_1;
  9. Web_XRD_Cell_2;
复制代码

运行结果:

9.jpg

10.jpg

相应的批量数据获取和保存函数为

[SaveLog,ProbList,NewList] =SaveStockTSDay(StockList,AdjFlag,XRDFlag)

此时需令XRDFlag = 1即可批量获取获取除权除息信息。

首次运行后就会在本地DataBase\Stock\XRDdata_mat保存全部A股的除权除息信息数据:

11.jpg


(5)     财务数据和三张表数据获取
GetStockFinIndicators_Web.m函数和GetStock3Sheet_Web.m函数可以获取单只股票的财务数据和三张表数据
[FIndCell,YearList] = GetStockFinIndicators_Web(StockCode,Year)
[BalanceSheet,ProfitSheet,CashFlowSheet,YearList]= GetStock3Sheet_Web(StockCode,Year)

数据获取后用cell矩阵承装

12.jpg

13.jpg

相应的批量数据获取函数为

[SaveLog,ProbList,NewList] =SaveStockFD(StockList,Opt)

% Opt 0:获取财务指标 1:获取3张表

财务数据存贮位置:

FQuantToolBox\DataBase\Stock\FinancialIndicators_mat

14.jpg

三张表数据存贮位置:

FQuantToolBox\DataBase\Stock\Sheet3_mat

15.jpg

(6)     其他函数
CalculateStockXRD.m由除权数据生成前后复权数据
测试样例:

  1. %% 参数设置
  2. StockCode_G = '000562'

  3. str = ['全局参数设置完毕!'];
  4. disp(str);
  5. %% 获取股票日线(除权除息)数据测试
  6. StockCode = StockCode_G;

  7. BeginDate = '20140101';
  8. EndDate = '20150101';

  9. [StockDataDouble,adjfactor] =GetStockTSDay_Web(StockCode,BeginDate,EndDate);
  10. %% 进行前复权数据生成

  11. StockData = StockDataDouble(:,1:end);
  12. XRD_Data = [];
  13. AdjFlag = 1;
  14. [StockDataXRD, factor] =CalculateStockXRD(StockData, XRD_Data, AdjFlag);
  15. %% 复权价格plot
  16. scrsz = get(0,'ScreenSize');
  17. figure('Position',[scrsz(3)*1/4scrsz(4)*1/6 scrsz(3)*4/5 scrsz(4)]*3/4);

  18. AX1 = subplot(211);
  19. OHLC = StockDataDouble(:,2:5);
  20. KplotNew(OHLC);
  21. Dates = StockDataDouble(:,1);
  22. LabelSet(gca, Dates, [], [], 1);
  23. ind = find( StockCodeDouble ==str2double(StockCode) );
  24. str =[StockList{ind,1},'-',StockList{ind,2},'除权价格'];
  25. title(str,'FontWeight','Bold');

  26. AX2 = subplot(212);
  27. OHLC = StockDataXRD(:,2:5);
  28. KplotNew(OHLC);
  29. Dates = StockDataDouble(:,1);
  30. LabelSet(gca, Dates, [], [], 1);
  31. ind = find( StockCodeDouble ==str2double(StockCode) );
  32. str =[StockList{ind,1},'-',StockList{ind,2},'前复权价格'];
  33. title(str,'FontWeight','Bold');

  34. linkaxes([AX1, AX2], 'x');
复制代码

16.jpg





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:toolbox MATLAB quant matla atlab 工具箱

FQuantToolBox Mannual V1.0 byLY_faruto.pdf

1.32 MB

回帖推荐

faruto 发表于146楼  查看完整内容

具体看在线帮助文档 http://faruto.matlabsky.com/FQuantToolBoxHelpOnLine/

faruto 发表于2楼  查看完整内容

最新版下载地址(可以收藏,未来持续更新): http://pan.baidu.com/s/1gdIiccN ========================================= FQuantToolBox工具箱的更新周期,现在暂无明确时间表。未来更新的大致方向就是增添更多金融标的的免费数据获取方式,增添更多的回测辅助函数和样例。 more info see: FQuantToolBox Mannual FQuantToolBox Mannual V1.0 byLY_faruto.pdf 您可以先下载Mannual进行查看。 download: ...

fantuanxiaot 发表于114楼  查看完整内容

量化投资代码 https://bbs.pinggu.org/thread-3511255-1-1.html http://www.matlabsky.com/thread-45600-1-1.html均可 FQuantToolbox代码和量化投资代码 最新版下载地址(可以收藏,未来持续更新):[/backcolor] http://pan.baidu.com/s/1gdIiccN

faruto 发表于111楼  查看完整内容

try this http://pan.baidu.com/s/1gdIiccN

faruto 发表于112楼  查看完整内容

最新版下载地址(可以收藏,未来持续更新): http://pan.baidu.com/s/1gdIiccN =========================================

faruto 发表于84楼  查看完整内容

FQuantToolBox源代码Mcode获取方式: 买《量化投资:以MATLAB为工具》写评论得FQuantToolBox全部源码Mcode http://www.matlabsky.com/thread-45969-1-1.html

faruto 发表于72楼  查看完整内容

是这样的,是从新浪的网页抓取的数据 所以速度会不尽人意,原本有个 新浪 xml 的数据源,速度很快,但历史数据不全且无法获得复权因子,后来调整成现在的这个数据源,历史数据全(可获取A股所有股票从上市日 至今的数据,包括已经退市的股票),且可以获得复权因子。所以最终 综合考虑 还是使用 现在这个数据源,损失了一定的效率问题。日线的分析基本 都是离线 非实时的,所以对于做模型和分析 没啥影响。

faruto 发表于75楼  查看完整内容

但我 股票日线数据格式是 股票代码__D_ExDiv.mat,所以需要修改成(或者你已经批量修改数据名字,那就不用改了)

faruto 发表于74楼  查看完整内容

尝试 这样

faruto 发表于68楼  查看完整内容

恩。这个没办法。免费的东西总是有利有弊。 下了历史数据库,单纯全市场日线数据更新 速度还是可以的啊。 每日交易明细下载的比较慢。

faruto 发表于65楼  查看完整内容

感谢大家支持。 新年更新: 最新版本: FQuantToolBox版本更新V1.2-基于MATLAB的量化数据回测工具箱 by faruto http://www.matlabsky.com/thread-45744-1-1.html
已有 14 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
冬致夏陌 + 5 + 5 + 5 精彩帖子
gilsonn + 1 + 1 + 1 热心帮助其他会员
jerker + 60 + 60 + 1 + 1 + 1 精彩帖子
zhuosn + 2 奖励积极上传好的资料
zhangibt + 100 精彩帖子
wwqqer + 5 + 5 + 5 精彩帖子, 很有用!
crystal8832 + 2 + 2 + 1 对论坛有贡献
52beyond12 + 5 + 2 + 2 + 2 精彩帖子
slrosssss + 1 + 2 + 3 + 4 牛逼
我的素质低 + 5 精彩帖子

总评分: 经验 + 260  论坛币 + 78  学术水平 + 44  热心指数 + 43  信用等级 + 43   查看全部评分

本帖被以下文库推荐

http://weibo.com/faruto
www.matlabsky.com
http://blog.sina.com.cn/faruto
沙发
faruto 发表于 2014-12-14 23:21:51 |只看作者 |坛友微信交流群
最新版下载地址(可以收藏,未来持续更新):


http://pan.baidu.com/s/1gdIiccN


=========================================

FQuantToolBox工具箱的更新周期,现在暂无明确时间表。未来更新的大致方向就是增添更多金融标的的免费数据获取方式,增添更多的回测辅助函数和样例。

more info see:
FQuantToolBox Mannual
FQuantToolBox Mannual V1.0 byLY_faruto.pdf 您可以先下载Mannual进行查看。


download:
FQuantToolBox V1.0无历史数据库版本 下载
FQuantToolBox V1.0[NoHistData] byLY_faruto.rar 36.7M


FQuantToolBox V1.0历史数据库版本 下载
FQuantToolBox V1.0[PlusHistData] byLY_faruto.rar (RAR1.04G,解压后13G)


下个版本 大概更新添加内容为:

个股添加行业分类、概念分类、相关个股关联树、期货日线数据、期货各个品种交易所持仓排名 等。




已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
fantuanxiaot + 5 + 5 + 5 + 5 精彩帖子

总评分: 论坛币 + 5  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

使用道具

藤椅
sunshinefd 发表于 2014-12-14 23:27:18 |只看作者 |坛友微信交流群
好东西
已有 1 人评分论坛币 收起 理由
fantuanxiaot + 2 精彩帖子

总评分: 论坛币 + 2   查看全部评分

使用道具

板凳
榄外人L 发表于 2014-12-15 10:56:32 |只看作者 |坛友微信交流群
谢谢分享,虽然我学的慢,但对我帮助挺大的~
已有 1 人评分论坛币 收起 理由
fantuanxiaot + 3 精彩帖子

总评分: 论坛币 + 3   查看全部评分

使用道具

报纸
fantuanxiaot 发表于 2014-12-15 13:13:16 |只看作者 |坛友微信交流群
faruto的工具箱更新到了V1.1版本!!!这是F老师重大源码分享!

使用道具

地板
lwzxy 发表于 2014-12-15 14:32:23 |只看作者 |坛友微信交流群
好人啊。
已有 1 人评分经验 论坛币 收起 理由
fantuanxiaot + 1 + 1 精彩帖子

总评分: 经验 + 1  论坛币 + 1   查看全部评分

使用道具

7
fantuanxiaot 发表于 2014-12-15 14:33:54 |只看作者 |坛友微信交流群
洋哥的帖子大家速度顶起来啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

使用道具

8
jxnu_xx 发表于 2014-12-15 15:32:39 |只看作者 |坛友微信交流群
好贴啊,真正的干货,学起来
已有 1 人评分经验 论坛币 收起 理由
fantuanxiaot + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

使用道具

9
ljchuan1988 发表于 2014-12-15 16:34:29 |只看作者 |坛友微信交流群
楼主东西下载了,为啥运行有误呢
已有 1 人评分经验 论坛币 收起 理由
fantuanxiaot + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

使用道具

10
faruto 发表于 2014-12-15 16:56:27 |只看作者 |坛友微信交流群
ljchuan1988 发表于 2014-12-15 16:34
楼主东西下载了,为啥运行有误呢
哪里 有什么报错 ?
已有 1 人评分经验 论坛币 收起 理由
fantuanxiaot + 6 + 6 精彩帖子

总评分: 经验 + 6  论坛币 + 6   查看全部评分

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 00:26